package panels;

//miglayout
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;

import net.miginfocom.swing.MigLayout;

import com.jgoodies.forms.factories.DefaultComponentFactory;

import dane.Logowanie;
import dane.Towar;
import dane.Utwory;
import dane.Zapytania;

/**
 * Program <code>Music STore</code>
 * Klasa <code>EdytujTowar</code>tworząca okno z możliwośćia edycji wybranej płyty z asortymentu
 * @version 1.0 2013
 * @author Dorota Chyła, Tomasz Bednarski, Wojciech Florkowski, Łukasz Gąsiewicz
 */
public class EdytujTowar extends JDialog implements ActionListener {

	/**
	 * @param args
	 */
	private final JPanel contentPanel = new JPanel();

	private JTextField[] imie = new JTextField[4];
	private JTextField[] nazwisko = new JTextField[4];
	private JTextField[] pseudonim = new JTextField[4];
	private JTextField[] nazwa = new JTextField[30];
	private JTextField[] czas = new JTextField[30];
	private JLabel[] nr = new JLabel[30];
	private JTextField jtfZespol;
	private JTextField jtfTytul;
	private JTextField jtfGatunek;
	private JTextField jtfRok;
	private JTextField jtfCena;
	private JTextField jtfIlosc;
	private JButton jbZmien, jbWyjdz;

	private Logowanie log;
	private Towar t;
	private Zapytania zap;
	private Utwory[] ut;

	/**
	 * Konstruktor parametrowy tworzący okno JDialog
	 * @param t towar, który ma być edytowany
	 */
	public EdytujTowar(Towar t) {
		this.t = t;
		zap = new Zapytania();
		log = Logowanie.pobierzLogowanie();
		setBounds(0, 0, 800, 600);
		Container contentPane = getContentPane();
		contentPane.setLayout(new MigLayout());
		contentPane.add(contentPanel, BorderLayout.CENTER);
		contentPanel.setLayout(new MigLayout());
		{

			JLabel lblTwrcy = DefaultComponentFactory.getInstance()
					.createTitle("Twórcy:");
			lblTwrcy.setFont(new Font("Tahoma", Font.PLAIN, 12));
			lblTwrcy.setForeground(Color.DARK_GRAY);
			lblTwrcy.setHorizontalAlignment(SwingConstants.LEFT);
			contentPanel.add(lblTwrcy, "span, wrap");

			JLabel lblZesp = new JLabel("Zespół:");
			contentPanel.add(lblZesp);

			jtfZespol = new JTextField();
			jtfZespol.setText(t.getZespol());
			contentPanel.add(jtfZespol, "growx, wrap");
			jtfZespol.setColumns(10);

			JLabel jlAlbum = DefaultComponentFactory.getInstance().createTitle(
					"Album:");
			jlAlbum.setForeground(Color.DARK_GRAY);
			jlAlbum.setFont(new Font("Tahoma", Font.PLAIN, 12));
			contentPanel.add(jlAlbum, "wrap");

			JLabel lblTytu = new JLabel("Tytuł:");
			lblTytu.setHorizontalAlignment(SwingConstants.RIGHT);
			contentPanel.add(lblTytu, "wrap");

			jtfTytul = new JTextField();
			jtfTytul.setColumns(10);
			jtfTytul.setText(t.getNazwaAlbumu());
			contentPanel.add(jtfTytul, "growx, wrap");

			JLabel jlGatunek = new JLabel("Gatunek:");
			jlGatunek.setHorizontalAlignment(SwingConstants.RIGHT);
			contentPanel.add(jlGatunek, "span");

			jtfGatunek = new JTextField();
			jtfGatunek.setColumns(10);
			jtfGatunek.setText(t.getGatunek());
			contentPanel.add(jtfGatunek, "growx, wrap");

			JLabel jlRok = new JLabel("Rok wydania:");
			jlRok.setHorizontalAlignment(SwingConstants.RIGHT);
			contentPanel.add(jlRok, "wrap");

			jtfRok = new JTextField();
			jtfRok.setColumns(10);
			jtfRok.setText(t.getRokWyd());
			contentPanel.add(jtfRok, "growx, wrap");

			JLabel jlCena = new JLabel("Cena:");
			jlCena.setHorizontalAlignment(SwingConstants.RIGHT);
			contentPanel.add(jlCena, "wrap");

			jtfCena = new JTextField();
			jtfCena.setColumns(10);
			// jtfCena.setBounds(483, 127, 200, 20);
			jtfCena.setText("" + t.getCenaMag());
			contentPanel.add(jtfCena, "growx, wrap");

			JLabel jlIlosc = new JLabel("Ilość:");
			jlIlosc.setHorizontalAlignment(SwingConstants.RIGHT);
			// jlIlosc.setBounds(373, 158, 100, 14);
			contentPanel.add(jlIlosc, "wrap");

			jtfIlosc = new JTextField();
			jtfIlosc.setColumns(10);
			// jtfIlosc.setBounds(483, 158, 200, 20);
			jtfIlosc.setText("" + t.getIloscMag());
			contentPanel.add(jtfIlosc, "growx, wrap");

			JSeparator separator_1 = new JSeparator();
			separator_1.setOrientation(SwingConstants.VERTICAL);
			// separator_1.setBounds(352, 11, 438, 189);
			contentPanel.add(separator_1, "wrap");

			JLabel jlUtwory = DefaultComponentFactory.getInstance()
					.createTitle("Utwory:");
			jlUtwory.setHorizontalAlignment(SwingConstants.CENTER);
			jlUtwory.setForeground(Color.DARK_GRAY);
			jlUtwory.setFont(new Font("Tahoma", Font.PLAIN, 12));
			contentPanel.add(jlUtwory, "split 3");

			JLabel jlTytul = new JLabel("Tytuł:");
			contentPanel.add(jlTytul);

			JLabel jlCzas = new JLabel("Czas:");
			// jlCzas.setBounds(167, 241, 46, 14);
			contentPanel.add(jlCzas, "wrap");

			setUtwory();
		}
		{
			JPanel buttonPane = new JPanel();
			buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
			contentPane.add(buttonPane, BorderLayout.SOUTH);
			{
				jbZmien = new JButton("Zmień");
				jbZmien.addActionListener(this);
				buttonPane.add(jbZmien);
			}
			{
				jbWyjdz = new JButton("Wyjdź");
				jbWyjdz.addActionListener(this);
				buttonPane.add(jbWyjdz);
			}
		}
		getRootPane().setDefaultButton(jbWyjdz);
	}

	/**
	 * Metoda prywatna usawiająca JLabel oraz 2 JTextField, odpowiadające za edycje utworów płyty
	 */
	private void setUtwory() {
		int id = Integer.valueOf(t.getId());
		ut = zap.getSelectMusic(id);
		int i = 0;
		for (Utwory utwor : ut) {
			nr[i] = new JLabel("" + (i + 1));
			add(nr[i], "gap unrelated, split 3");

			nazwa[i] = new JTextField();
			nazwa[i].setText(ut[i].getTytul());
			add(nazwa[i], "gap unrelated, grow x");

			czas[i] = new JTextField();
			czas[i].setText(ut[i].getCzas());
			add(czas[i], "gap unrelated, grow x, wrap");

			i++;
		}
	}

	/**
	 * Publiczna metoda z interfejsu <code>ActionListener</code>
	 * obslugujaca zdarzenie akcji <code>ActionEvent</code>
	 */
	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();
		if (source == jbZmien) {
				zap.dodaj("UPDATE towar SET gatunek_muzyki= '"
						+ jtfGatunek.getText() + "' ,nazwa_albumu= '"
						+ jtfTytul.getText() + "' ,rok_wydania= '"
						+ jtfRok.getText() + "' ,ilosc_magazyn= "
						+ jtfIlosc.getText() + " ,cena_magazyn= "
						+ jtfCena.getText() + " WHERE id_towaru = "
						+ t.getId());
				for (int i = 0; i < ut.length; i++) {
					zap.dodaj("UPDATE utwory SET tytul= '" + ut[i].getTytul()
							+ "' ,czas_trwania= '" + ut[i].getCzas()
							+ "' WHERE id_utworu= " + ut[i].getId());
				}
				JOptionPane.showMessageDialog(this, "Zmodyfikowano produkt.",
						"Edytuj produkt", JOptionPane.INFORMATION_MESSAGE);
		}
		else if(source==jbWyjdz){
			setVisible(false);
		}
	}

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		/*
		 * try { tralala dialog = new tralala();
		 * dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		 * dialog.setVisible(true); } catch (Exception e) { e.printStackTrace();
		 * }
		 */
	}
}
